# 基于Ubuntu 22.04构建基础镜像
FROM ubuntu:22.04
LABEL maintainer="jiac <jiac9129@gmail.com>"

# 设置环境变量（符合最新Docker语法）
ENV SOFTPATH=/home/software \
    MBDYN_HOME=${SOFTPATH}/mbdyn \
    PATH=${PATH}:${MBDYN_HOME}/bin \
    LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${MBDYN_HOME}/lib \
    PYTHONPATH=${PYTHONPATH}:${MBDYN_HOME}/libexec/mbpy

# 配置国内镜像源并安装系统依赖（使用阿里云镜像）
RUN apt-get update --allow-insecure-repositories && \
    # 1.临时允许不安全仓库更新（解决初始证书问题）
    apt-get install -y --allow-unauthenticated ca-certificates && \
    # 2.安装CA证书包（跳过签名验证）
    sed -i 's@http://archive.ubuntu.com/@https://mirrors.aliyun.com/@g' /etc/apt/sources.list && \
    # 3.替换主软件源为阿里云镜像
    sed -i 's@http://security.ubuntu.com/@https://mirrors.aliyun.com/@g' /etc/apt/sources.list && \
    # 4.替换安全更新源为阿里云镜像
    apt-get update && apt-get install -y \
    # 基础编译工具链
    build-essential \
    gfortran \
    # 自动化构建工具
    autoconf \
    automake \
    libtool \
    autotools-dev \
    # 数学库依赖
    libltdl-dev \
    liblapack-dev \
    libsuitesparse-dev \
    # 数据格式支持
    libnetcdf-dev \
    libnetcdf-c++4-dev \
    # Python扩展支持
    swig \
    # 版本控制
    git \
    && rm -rf /var/lib/apt/lists/*  # 清理APT缓存


# 创建软件安装目录
RUN mkdir -p $SOFTPATH

# 克隆并构建MBDyn
RUN git clone https://public.gitlab.polimi.it/DAER/mbdyn.git $SOFTPATH/mbdyn-src && \
    cd $SOFTPATH/mbdyn-src && \
    # 引导构建系统
    ./bootstrap.sh && \
    # 配置安装路径
    ./configure --prefix=$MBDYN_HOME && \
    # 并行编译（根据CPU核心数自动优化）
    make -j$(nproc) && \
    # 安装到目标目录
    make install && \
    # 清理源码节省空间
    rm -rf $SOFTPATH/mbdyn-src

# 设置容器默认工作目录
WORKDIR /work

# 启动容器时进入bash
CMD ["/bin/bash"]
